package com.example.XqmZsb.service;

import com.example.XqmZsb.domian.Dome01;
import com.example.XqmZsb.domian.Enrollment;
import com.example.XqmZsb.domian.Enrollmentinfo;
import com.example.XqmZsb.domian.Majorinfo;
import com.example.XqmZsb.domian.Schoolmajorinfo;
import com.example.XqmZsb.mapper.Dome01Mapper;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.RequestBody;

import javax.annotation.Resource;
import java.util.*;

@Service
public class Dome01Service {

    @Resource
    private Dome01Mapper dome01Mapper;


    public List<Dome01> findByKey2(String key, Object value) {
        return dome01Mapper.findByKey2(key, value);
    }
    public Object findByAll2() {
        return dome01Mapper.findByAll2();
    }
    // 新增处理多条件查询的方法
    public List<Enrollment> findWithMultipleConditions(@RequestBody Map<String, Object> queryConditions) {
        // 创建一个HashMap来存储查询条件
        HashMap<String, Object> conditions = new HashMap<>(queryConditions);

        // 调用Mapper的多条件查询方法
        return dome01Mapper.findWithMultipleConditions(conditions);
    }

    // 新增处理多条件模糊查询的方法
    public List<Enrollment> findWithNameLike(@RequestBody Map<String, Object> queryConditions) {
        // 创建一个HashMap来存储查询条件
        HashMap<String, Object> conditions = new HashMap<>(queryConditions);

        // 调用Mapper的多条件查询方法
        return dome01Mapper.findWithNameLike(conditions);
    }

    // 修改Dome01Service中的findWithNameIn方法

    public List<Enrollmentinfo> findWithNameIn(@RequestBody Map<String, Object> queryConditions) {
        // 创建一个HashMap来存储查询条件
        HashMap<String, Object> conditions = new HashMap<>(queryConditions);

        // 对于name字段，我们假设它是一个逗号分隔的字符串，需要转换为列表
        if (conditions.containsKey("major")) {
            String namesStr = (String) conditions.get("major");
            Set<String> namesSet;
            if (namesStr != null) {
                namesSet = new HashSet<>(Arrays.asList(namesStr.split(",")));
            } else {
                namesSet = new HashSet<>();
            }
            // 将"names"键的值替换为处理过的Set<String>
            conditions.put("names", namesSet);
        }

        // 直接将整个条件Map传递给Mapper方法
        return dome01Mapper.findWithNameIn(conditions);
    }

    public List<Enrollmentinfo> findWithSchool(Map<String, Object> codeMap,Map<String, Object> SchoolMap,Map<String, Object> natureMap) {


        return dome01Mapper.findWithSchool(codeMap,SchoolMap,natureMap);
    }

    /*private ResponseEntity<Object> handleError(HttpStatus status, ErrorCode errorCode) {
        Map<String, Object> errorInfo = new HashMap<>();
        errorInfo.put("code", errorCode.getCode());
        errorInfo.put("message", errorCode.getMessage());
        return new ResponseEntity<>(errorInfo, status);
    }*/

    /////////////////////////////XqmZsb接口//////////////////////////////////
    // 接口一： 专科专业名称  模糊查询 专科专业名称和代码
    public List<Majorinfo> XqmZsbLikeName(@RequestBody Map<String, Object> queryConditions) {
        // 创建一个HashMap来存储查询条件
        HashMap<String, Object> conditions = new HashMap<>(queryConditions);

        // 调用Mapper的多条件查询方法
        return dome01Mapper.XqmZsbLikeName(conditions);
    }
    // 接口二： 专科专业代码  查询对应 专科专业小类代码 和小类名称
    public List<Majorinfo> XqmZsbSubName(@RequestBody Map<String, Object> queryConditions) {
        // 创建一个HashMap来存储查询条件
        HashMap<String, Object> conditions = new HashMap<>(queryConditions);

        // 调用Mapper的多条件查询方法
        return dome01Mapper.XqmZsbSubName(conditions);
    }
    // 接口三： 专科专业小类代码  查询对应 本科专业小类代码 和小类名称
    public List<Majorinfo> XqmZsbBKSubName(@RequestBody Map<String, Object> queryConditions) {
        // 创建一个HashMap来存储查询条件
        HashMap<String, Object> conditions = new HashMap<>(queryConditions);

        // 调用Mapper的多条件查询方法
        return dome01Mapper.XqmZsbBKSubName(conditions);
    }
    // 接口四： 按专业：本科小类代码 查询对应 本科专业代码和名称
    public List<Majorinfo> XqmZsbBKName(@RequestBody Map<String, Object> queryConditions) {
        // 创建一个HashMap来存储查询条件
        HashMap<String, Object> conditions = new HashMap<>(queryConditions);

        // 调用Mapper的多条件查询方法
        return dome01Mapper.XqmZsbBKName(conditions);
    }
    // 接口五： 按专业：本科代码 查询对应 本科专业学校相关信息  《多选》
    public List<Schoolmajorinfo> XqmZsbMajorSchoolIn(@RequestBody Map<String, Object> queryConditions) {
        // 创建一个HashMap来存储查询条件
        HashMap<String, Object> conditions = new HashMap<>(queryConditions);

        // 对于name字段，我们假设它是一个逗号分隔的字符串，需要转换为列表
        if (conditions.containsKey("underMajorCode")) {
            String namesStr = (String) conditions.get("underMajorCode");
            Set<String> namesSet;
            if (namesStr != null) {
                namesSet = new HashSet<>(Arrays.asList(namesStr.split(",")));
            } else {
                namesSet = new HashSet<>();
            }
            // 将"names"键的值替换为处理过的Set<String>
            conditions.put("underMajorCodes", namesSet);
        }

        // 直接将整个条件Map传递给Mapper方法
        return dome01Mapper.XqmZsbMajorSchoolIn(conditions);
    }
    // 接口六： 按学校：本科小类代码 查询对应 本科专业学校代码和名称
    public List<Schoolmajorinfo> XqmZsbSchool(@RequestBody Map<String, Object> queryConditions) {
        // 创建一个HashMap来存储查询条件
        HashMap<String, Object> conditions = new HashMap<>(queryConditions);

        // 调用Mapper的多条件查询方法
        return dome01Mapper.XqmZsbSchool(conditions);
    }
    // 接口七： 按学校：本科专业学校 查询对应 学校信息   《多选》
    public List<Schoolmajorinfo> XqmZsbSchoolIn(Map<String, Object> SchoolMap, Map<String, Object> natureMap) {
        return dome01Mapper.XqmZsbSchoolIn(SchoolMap,natureMap);
    }
}
